package com.gjt.thread.Thread;

/**
 * Created with Intel IDEA.
 * 线程的方法
 *  线程暂停或者准备暂停的方式： 对i/o 阻塞；对同步对象阻塞；可以放弃；休眠；连接另一个对象；可以结束；可以等待另一个对象; 可以被更高级的线程抢占；
 *                       可以被挂起； 可以停止
 * @Auther: gjt
 * @Date: 2024/3/20 22:12
 */
public class ThreadMethods {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread();
        // 设置线程的优先级
        thread.setPriority(1);

        // 让线程放弃使用cpu的权力。但不会放弃他有用的锁 其他线程需要他的资源时，其他线程也执行不了；
        // 方法含义；如果有另一个线程准备运行，可以运行该程序；没有的话还继续执行此线程
        Thread.yield();

        // 休眠；和yield 不同的是不管有没有其他线程准备运行，休眠都会暂停
        Thread.sleep(1000);

        // 唤醒正在休眠的线程
        thread.interrupt();

        /**
         * join:连接线程 一个线程可能需要另一线程的结果
         *  join(): 无限等待被连接的线程结束
         *  join(long millisecond):等待的时间
         *  join(long millisecond, int nanoseconds):等待时机
         */
        Thread t1 =new Thread();
        t1.join();

        /**
         * wait :等待一个他锁定的对象，会释放他自己拥有的锁并暂停
         *  wait():
         *  wait(long millisecond):等待的时间
         *  wait(long millisecond, int nanoseconds):等待时机
         *  以下情况回打破wait:时间到期；线程被中断；对象得到通知
         */
        t1.wait();

        /**
         * notify()
         * notifyAll()
         */
    }

}
